A debugger is a computer program used to test and debug other programs, which are referred to as debuggee programs or simply as “debuggees”. Debuggers generally have a fixed set of commands or interfaces. Low-level debuggers show a developer debuggee assembly code or machine code during debugging, while source-level debuggers show debuggee source code. A debugger generally provides a software developer with some control over debuggee execution, such as pausing execution to examine the debuggee's variables and other internal state information, stepping through debuggee code line-by-line, and setting a breakpoint to stop debuggee execution when a specified condition occurs within the debuggee. Some debuggers also allow a developer to modify the debuggee's internal state during debugging by setting variables, instead of merely observing the internal state.
Most debuggers provide command line user interfaces, for enhanced portability and decreased computing resource requirements. However, some debuggers have compatible front-ends that interact with their command line user interface. For example, a front-end may integrate a debugger with an Integrated Development Environment, and a front-end may provide graphics or visualization capabilities to users.